1. Technical Field
The present invention relates generally to the field of computer software and, more particularly, to methods of detecting and repairing damaged files and settings within a data processing system.
2. Description of Related Art
Currently, computer systems are built up through a series of installations provided by different software developers, each of which installs one or more different software components. There is no industry standard way to describe what comprises an application. Without this description, there is no way to implement a standard service that can protect the integrity of each application.
There is a need for a standard, simple, scalable, platform independent mechanism for detecting damaged applications and repairing them. Applications can be damaged in a variety of ways. Each of the following operations can damage one or more applications within a computer system:
Installation of new applications
Reconfiguring applications
The use of an application
Application error
User error
Viruses
Installation is dangerous because the current approach in the industry is a rather ad hock approach in which the responsibility for the installation procedure for each application rests with each application""s developer. During installation, any error or conflict between any two or more applications may potentially corrupt the computer system configuration. Applications do not have access to the requirements and dependencies of the other applications already installed on the target computer system. Without this information, no modification to a computer system""s files and settings can be made completely safe. Yet the modification of files and settings is required to install applications onto computer systems.
The reconfiguring of an application may also require that changes be made to files and configuration settings needed or used by other applications, and such changes may render one or more of the other applications inoperable.
The use of applications may also require that the files and settings within a computer system be updated from time to time. This requires applications to be xe2x80x9cwell behavedxe2x80x9d with respect to each other. Conflicts may still occur, either by chance, or error within an application. Yet the application developer""s priority is always to their application without regard to potential conflicts with other applications, except to insure their application wins such conflicts. Because the requirements and constraints of each application are not defined, each developer also becomes responsible for supporting the configuration management of every system on which the application is installed, and for handling conflicts in all configurations in which their application may be used. However, this responsibility is rarely, if ever, each application developer""s top priority.
The current system of deploying and running applications defines only very weak barriers between applications to prevent a given application from damaging other applications. Any conflict, if handled in the given application""s favor, may prevent a competitor""s application from running. This state of affairs provides little motivation to avoid conflicts with a competitor""s application so long as the developer""s own application can be configured properly. Each application is dependent on its own installation and runtime code to verify its configuration and access to prerequisite devices, drivers, applications, and system settings.
Users themselves may cause problems by modifying files or configuration settings, either by accident, failure to follow a procedure properly, etc. Often all the files and configuration settings are exposed to modification by the user.
In reality, virus attacks account for a very small percentage of all application failures. Yet a viral attack can result in a huge amount of damage.
Currently the generally accepted method of protecting a computer system from damage from outside viral attacks is through the use of third party vendor virus protection software products. However, these products must be updated frequently to be able to detect the latest viruses. Any new virus that has been created since the software was updated may be undetected by the virus protection software, thus enabling that virus to corrupt or destroy files necessary for the proper performance of the computer.
Therefore, there is a need for a method, system and apparatus that automatically detects damaged files and applications and restore them to their proper condition.
The present application provides a method, system, and apparatus for detecting and repairing damaged portions of a computer system. In a preferred embodiment of the present invention, a damage detection and repair facility monitors and detects changes to the computer system. The damage detection and repair facility compares these changes to the set of constraints defined by the working definitions for each application installed on the computer system. The working definitions define the invariant portions of each application and define the constraints placed upon the computer system by each application. Responsive to changes that are in conflict with this set of constraints, the damage detection and repair facility makes such changes in the persistent storage so as to resolve these conflicts. This may be done, for example, by repairing a damaged file, installing a missing driver, or adjusting an environment variable.